Kapitel Zwölf: Dateitypen 12.1 Dateitypen Zuerst einmal sind Dateien nichts anderes als einfach nur gespeicherte Daten. Die Struktur dieser Daten unterscheidet sich aber sehr stark. Es gibt ausführbare Programme, IFF-Bilder, Piktogramme oder eine Vielzahl anderer Datenstrukturen. Die meisten Dateien haben eine identifizierbare Struktur (obgleich nicht alle Datenstrukturen identifiziert werden können). Das Dateitypensystem von Opus 5 ist darauf ausgelegt, die Struktur einer Datei zu untersuchen und den Typ der darin enthaltenen Daten zu identifizieren. Sie können Directory Opus 5 auf eine unbegrenzte Anzahl von Dateitypen erweitern. Die Dateitypen gehören zu den vielseitigsten Fähigkeiten von Opus 5. Durch die Verwendung von Dateitypen können Sie Opus 5 darauf konfigurieren, z.B. Animationen auf Doppelklick abzuspielen, "Multiview" zu laden, wenn Sie eine AmigaGuide-Datei aktivieren, ein Archiv zu entpacken, wenn Sie es in ein anderes Verzeichnis "Nehmen & Ablegen" oder sogar, es einem externen Handler wie z.B. ArcDir zuzuführen. Dies ist die Essenz der Dateitypen; wenn Sie eine Aktion auf eine Datei ausführen, dann prüft Opus, was für ein Typ von Datei es ist und führt die demtentsprechende Aktion für diesen Dateityp aus. 12.2 Vordefinierte Dateitypen Opus 5 wird mit einer Anzahl bereits vordefinierter Dateitypen ausgeliefert. Diese sind eim Verzeichnis "DOpus5:Filetypes" abgelegt und haben eine vordefinierte Datenstruktur sowie damit verbundene vordefinierte Befehle. Dateitypen werden dynamisch gehandhabt. Opus 5 überprüft die in diesem Verzeichnis vorliegenden Dateitypen und lädt diese automatisch. Als kleine Annehmlichkeit liegen Opus 5 noch eine Reihe weiterer Dateitypen bei, die im Verzeichnis "DOpus5:Storage/Filetypes" abgelegt sind. Mit diesen Dateitypen ist die meiste Arbeit schon getan. Alle nötigen Details sind dort so eingestellt, wie Opus 5 sie braucht, um Dateiformate sicher zu erkennen. Kopieren Sie die Dateitypen, die Sie benötigen, einfach manuell in das Verzeichnis "DOpus5:Filetypes" oder benutzen Sie den automatischen Dateityperzeuger, um fehlende Dateitypen zu identifizieren und dann automatisch zu installieren. Opus wird Dateitypen dann automatisch erkennen und darauf zurückgreifen. Wenn die voreingestellten Befehle, mit denen die Dateitypen verknüpft sind, Ihnen nicht zusagen, dann können Sie diese natürlich einfach nach Ihren Wünschen verändern. Dazu brauchen Sie keine Kenntnisse vom internen Aufbau der Dateitypen. Alles was Sie machen müssen, ist einen Befehl zuzuweisen, der ausgeführt werden soll, wenn Opus 5 einen solchen Dateityp erkennt. 12.3 Der Dateitypenmanager Wählen Sie aus dem Einstellungen-Menü den Punkt "Dateitypen...". Es erscheint ein Fenster, in dem Ihnen die verfügbaren Dateitypen aus dem Verzeichnis "DOpus5:Filetypes" angezeigt werden. Für den ambitionierten Anfänger haben wir zahlreiche vordefinierte Dateitypen, wie z.B. AmigaGuide, LHA-Archiv, Workbench-Piktogramm oder Skriptdateien, beigefügt. Die verfügbaren Dateitypen sehen Sie in der Liste in alphabetischer Reihenfolge. Abb.: Eine beispielhafte Auflistung aller verfügbaren Dateitypen. Hinzufügen Hiermit erzeugen Sie einen neuen Dateitypeneintrag. Nach Anwahl dieses Knopfes erscheinen zwei weitere Fenster, in denen Sie die Definition des Dateityps und die damit verbundene Aktion bestimmen können. Duplizieren Hiermit duplizieren Sie einen angewählten Eintrag. Wählen Sie einen Eintrag an, benutzen Sie dann "Duplizieren" und ein neuer Eintrag wird von dem alten dupliziert und Ihnen zur Bearbeitung präsentiert. Bearbeiten Hiermit können Sie die Definition eines vorhandenen Dateityps und der damit verbundenen Aktion verändern oder erweitern. Entfernen Entfernt die angewählte Definition aus der Liste der Dateitypen und löscht den Eintrag auch aus dem Verzeichnis "DOpus5:Filetypes". Lagern Entfernt einen Eintrag aus der Liste der Dateitypen und verschiebt ihn aus dem Verzeichnis "DOpus5:Filetypes" nach "DOpus5:Storage/Filetypes". 12.4 Das Bearbeiten von Dateitypen Der Dateitypeneditor besteht aus mehreren Teilen. Dies sind die aktuelle Dateitypdefinition oder Dateitypklasse, die möglichen Ereignisse und Benutzeraktionen und die korrespondierenden Befehle, die mit jeder Aktion ausgeführt werden. Abb.: Der Dateitypeneditor. Ein Doppelklick auf einen Dateityp oder die Anwahl des Knopfes "Bearbeiten" zeigt die Liste der Ereignisse, die für jeden Dateityp definiert werden können, eine Satz von Menüpunkten, die Sie für die Piktogramm-Menüs dieses Typs definieren können und das Standardpiktogramm, das Sie für diesen Dateityp benutzen wollen. 12.4.1 Ereignisse Jede dieser Aktionen steht in Verbindung mit einem Mausereignis oder einer begrenzten Anzahl von Opus 5-Kommandos, die Benutzer1 - Benutzer4 benannt sind. Ist einer der Einträge mit einem Haken versehen, bedeutet dies, daß dieses Ereignis schon mit einer Liste auszuführender Befehle belegt ist. Ein Klick auf eines der Objekte dieser Liste ruft den Funktionseditor auf, der Ihnen die Definition der zu diesem Ereignis gehörenden Befehle erlaubt. Abb.: Der Funktionseditor. Um die Definitionen der verschiedenen Ereignisse miteinander vergleichen zu können oder mehrere Ereignisse parallel zu definieren, können Sie auch mehrere dieser Funktionseditoren aufrufen. Da jeder dieser Ereignistypen etwas anderes ausführen kann, sind üblicherweise nur einige wenige definiert. Es ist sicherlich nicht nötig, alle Ereignisse mit einer eigenen Befehlsliste zu versehen. Wenn jetzt eines der aufgelisteten Ereignisse stattfindet, macht Opus 5 folgendes: - Zuerst wird die Liste der Dateitypen durchsucht und überprüft, ob eine Datei mit diesen Dateitypen übereinstimmt. Die Reihenfolge der Überprüfung der Dateitypen geschieht übrigens nach der Priorität der Dateitypen (Wie Sie die Priorität ändern, erfahren Sie weiter unten im Text). - Wurde ein passender Dateityp gefunden, wird überprüft, ob für das Ereignis eine Befehlsliste vorliegt. Liegt diese vor, wird sie ausgeführt. - Wurde kein passender Dateityp gefunden oder aber es gibt keine Befehlsliste für das damit verbundene Ereignis, wird die Suche in der Dateitypenliste fortgesetzt. Es könnte ja noch ein Eintrag gefunden werden, für den eine Befehlsliste vorliegt. 12.4.2 Mausereignisse Ein Mausereignis tritt auf, wenn Sie einen Doppelklick ausführen oder ein Objekt mit "Nehmen & Ablegen" bewegen. Der Doppelklick: Dieses Ereignis tritt auf, wenn Sie mittels Doppelklick eine Datei aktivieren. Meist wird dieser zur Analyse der Datei genutzt, um dann z.B. eine als Bild erkannte Datei anzuzeigen oder eine Tondatei abzuspielen. Die aktuelle Geschwindigkeit des Doppelklicks wird in den Einstellungen des Amiga-Systems vorgenommen ("Prefs/Input"). Nehmen & Ablegen: Dieses Ereignis tritt auf, wenn eine Datei mittels Mausklick aufgenommen und dann in einem anderen Verzeichnis abgelegt wird. Dieses Ereignis wird gerne für das Entpacken von Archiven benutzt. 12.4.3 Kommandoereignisse (Benutzer 1-4) Kommandoereignisse treten auf, wenn auf eine Datei eine Aktion mittels der begrenzt möglichen Opus 5-Benutzerkommandos ausgeführt wird. Nur die vier Kommandoereignisse Benutzer1 - Benutzer4 sind hier verfügbar. Diese Bezeichnung mag Ihnen vielleicht etwas geheimnisvoll vorkommen, aber Sie gibt Ihnen die größtmögliche Flexibilität. Jeder der internen Befehle von Opus 5 hat eine bestimmte Bedeutung, aber es mag Fälle geben, in denen keiner dieser Befehle für so richtig zu passen scheint. Und genau für diese Fälle wurden die Benutzer-Kommandos definiert, die dann in diesem Moment bedeuten "Führe eine Operation auf dieses Objekt aus" 12.4.4 Piktogramm- und Dateitypen-Menüs Seit Opus 5.5 hat jedes Piktogramm (und Dateilister im Textmodus, wenn dies aktiviert ist) einen Satz datitypabhängige Popup-Menüs, die durch Druck auf die rechte Maustaste über dem Piktogramm oder dem Eintrag im Textmodus-Dateilister aufgerufen werden. Opus bietet hier eine kleine Vorauswahl von Befehlen für jeden Dateityp, aber Sie können diese Menüs beliebig mit den von Ihnen benötigten Befehlen erweitern, die sich dann nur auf Piktogramme oder Dateien eines bestimmten Typs beziehen. Wenn das Piktogramm einer Datei angezeigt wird, für die Sie einen Dateityp definiert haben, so werden die dateitypabhängigen Piktogramm-Menüs an die Popup-Menüs für Piktogramme dieses Typs angehängt. Wählen Sie "Hinzu", um den Namen und die Funktion dieses benutzerdefinierten Menüeintrages zu definieren. 12.4.5 Das Standardpiktogramm und dessen Auswahl Der Knopf "Pikt. wählen" erlaubt es Ihnen, ein Piktogramm festzulegen, das von Opus 5 für diesen spezifischen Dateityp in einem Dateilister angezeigt wird, wenn dieser in den Piktogrammodi betrieben wird oder aber ausgelagert auf dem Hauptfenster von Opus. Wählen Sie dieses Piktogramm entweder über das Dateiauswahlfenster oder aber legen Sie ein Piktogramm mittels "Nehmen & Ablegen" in das Feld über dem Knopf "Pikt. wählen" (Wir haben ein Verzeichnis "DOpus5:Icons" hinzugefügt, in dem solche Piktogramme aufbewahrt werden können). Wenn hier ein Piktogramm definiert wird, so wird dieses anstelle der Amiga-Systemeinstellungen genutzt, wenn ein Piktogramm mittels des Befehls "AddIcon" hinzugefügt wird. 12.4.6 Klassendefinition bearbeiten Unterhalb der Liste der Ereignisse befindet sich der Knopf "Def. bearb....", mit dem Sie die Definition (oder auch Klasse) des Dateityps modifizieren können. Lesen Sie dazu bitte auch die 'Definition eines Dateityps'. 12.5 Definition eines Dateityps Der Aufruf von "Def. bearb..." aus dem Ereignisfenster führt zum Öffnen des Editors für die Dateitypendefinition. Hier definieren Sie die Elemente, die Opus 5 zur Erkennung eines Dateityps benötigt. Abb.: Bearbeiten Sie hier die Definition des Dateityps. Name: Hier geben Sie dem Dateityp einen Namen. ID: Die ID (Identifikation) erscheint im Dateitypen-Manager neben dem Namen des Dateityps. Dies ist eine Abkürzung für den Namen des Dateitypen. Pri: Hier bestimmen Sie die Priorität eines Dateityps. Die Priorität ist ausschlaggebend für die Reihenfolge, in der die Dateitypen abgearbeitet werden, wenn eine unbekannte Datei untersucht wird. Generell sollte die Priorität auf Null belassen werden, aber es kann durchaus sinnvoll oder sogar nötig sein, die Prioritäten anders zu verteilen. Nehmen wir mal an, Sie hätten zwei Dateitypen definiert, wobei der eine eine Untermenge des anderen darstellt (z.B. 24Bit-ILBM-Bilder gegenüber regulären ILBM-Bildern). Sie hätten es gerne, wenn zuerst auf den 24Bit- Datentyp getestet würde, da dieser eine Untermenge des regulären IFF-ILBM-Datentyps ist. Würde zuerst der reguläre Dateityp überprüft und eine Übereinstimmung gefunden, würde der 24Bit-Datentyp gar nicht mehr überprüft und hätte damit seine Funktion verloren, obwohl der reguläre Datentyp trotz korrekter Erkennung des Formates vielleicht gar nicht in der Lage ist, 24Bit-Dateien darzustellen. In einem solchen Fall müssen Sie die Priorität des 24Bit-Datentyps höher einstellen als die des regulären IFF-ILBM-Datentyps. Unterhalb der drei oben beschriebenen Felder befindet sich nun ein größeres Feld, in dem die Klauseln für die korrekte Identifikation des Dateityps stehen müssen. Diese Klauseln werden von Opus 5 der Reihe nach abgearbeitet, um letztendlich einen Dateityp korrekt zu identifizieren. Diese Klauseln können so einfache Anweisungen enthalten, wie eine einfache Suche nach der Namenserweiterung einer Datei (z.B. daß alle Dateien, die auf ".TXT" enden, als Text erkannt werden) oder aber auch komplexe Scanoperationen nach Daten in einem spezifischen IFF-Chunk. Unterhalb der Liste der Klauseln befinden sich (von links nach rechts): ein Knopf, ein Textfeld (nur zur Darstellung) und ein Feld zur Übergabe von Argumenten. Diese werden für das Bearbeiten der Klauseln benötigt, wie Sie weiter unten lesen können Hinzufügen: Fügt einen neuen Eintrag in die Liste der Klauseln ein. Einfügen: Fügt über dem angewählten Eintrag in der Liste der Klauseln einen neuen Eintrag ein. Entfernen: Entfernt den angewählten Eintrag. Datei anzeigen: Dies erlaubt Ihnen die Anwahl einer Datei, die über den Textanzeiger wiedergegeben wird, damit Sie leichter Klauseln herausfinden können, die für eine korrekte Erkennung des Dateityps benötigt werden. 12.6 Bearbeiten der Dateitypendefinition Um eine der Klauseln der Liste zu bearbeiten, wählen Sie einfach den gewünschten Eintrag an. Der Inhalt dieses Eintrages wird nun nach unten in das Anzeigefeld und das Feld für die Argumentenübergabe übernommen. Um den Inhalt des Anzeigefeldes zu verändern, klicken Sie auf den kleinen Knopf links daneben und eine Liste alternativer Klauseln wird Ihnen präsentiert. Wählen Sie dort eine andere Klausel aus oder wählen Sie "Abbruch". Abb.: Wählen Sie hier eine Klausel aus. Die Struktur eines Dateitypdefinitionsskriptes, wie es in der Liste der Klauseln angezeigt wird, besteht aus einer oder mehreren Klauseln, die beschreiben, was bei der Überprüfung des Dateityps zur sicheren Erkennung in Erwägung gezogen werden sollte. Es gibt nur zwei Anweisungen, die die Klauseln voneinander abgrenzen: "Und" und "Oder". Diese definieren, was zu tun ist, wenn eine Klausel fehlschlägt oder Erfolg hat. Wenn alle Klauseln abgearbeitet sind und das Resultat dieser Operation wahr ist, dann ist die zu untersuchende Datei von just diesem Dateityp. 12.6.1 Entscheidungsklauseln Klausel: Und Syntax: Und Ist die vorhergehende Klausel wahr, dann wird bei einem "Und" auch die nachfolgende Klausel überprüft; anderenfalls wird zur nächsten Klausel gesprungen. Wenn die vorhergehende Klausel unwahr ist, dann wird die Ausführung an dieser Stelle abgebrochen und der Dateityp kann nicht mit diesem übereinstimmen. Klausel: Oder Syntax: Oder Ist die vorhergehende Klausel unwahr, dann wird die nachfolgende Klausel überprüft; anderenfalls wird zur nächsten Klausel gesprungen. 12.6.2 Überprüfungsklauseln Klausel: Vergl. Syntax: Vergl. TEXT, Vergl. $HEX, Vergl. %BINÄR, Vergl. \xxx Hiermit können Sie prüfen, ob eine Sequenz von Bytes am Beginn der zu untersuchenden Datei mit dem angegebenen Muster übereinstimmt. Die Klausel "Vergleichen" unterstützt auch binäre Übereinstimmungen. Um in einem Text einen Platzhalter zu definieren, benutzen Sie das "?". Um ein einzelnes unbekanntes Byte zu ersetzen, wenn Sie hexadezimal arbeiten, benutzen Sie "??". Eine weitere Form der Eingabe ist es, die Syntax eines ASCII-Zeichens durch seinen Dezimalwert zu spezifizieren. "\009" entspricht dem Tabulatorzeichen, "\114" wäre ein "r" und "\063" entspricht dem Fragezeichen. Beispiele: Vergl. $000003F3 (mit diesen Bytes startet ein ausführbares Programm) Vergl. FORM????ILBM (dies charakterisiert ein IFF-Bild) Vergl. Hallo\009Du ("Hallo", dann ein Tabulatorzeichen, dann "Du") Vergl. $FFFA (Übereinstimmung mit hexadezimalen Zeichen) Vergl. %10110 (Übereinstimmung mit binären Zeichen) Vergl. TEXT\127 (Übereinstimmung mit "TEXT", plus dem Zeichen ) Klausel: Vergl. (ign.) Syntax: Identisch mit Vergl. Diese Klausel ist identisch mit dem einfachen "Vergl.", jedoch wird bei dieser nicht auf Groß- oder Kleinschreibung geachtet. Dies gilt allerdings nur für ASCII-Zeichen. Hexadezimale, binäre oder "\xxx"-Eingaben müssen hier ganz genauso übereinstimmen. Klausel: Vergl. Bits Syntax: Vergl. Bits +/- HSPARWED Testet, ob die Schutzbits der Datei übereinstimmen. Um zu überprüfen, ob ein Schutzbit gesetzt ist, stellen Sie einfach ein "+" voran. Zum Test, ob ein Bit nicht gesetzt ist, stellen Sie ein "-" voran. Beispiele: Vergl. Bits +RW (Bits "R" und "W" müssen an sein, andere sind egal) Vergl. Bits -E (Bit "E" (für ausführbar) muß aus sein) Vergl. Bits +RW -E (Bits "R" und "W" müssen an, Bit "E" muß aus sein) Klausel: Vergl. Komm. Syntax: Vergl. Komm. TEXT Vergleicht den angegebenen Text mit dem Dateikommentar der zu untersuchenden Datei. Jeder beliebige Platzhalter des AmigaDOS kann hier verwendet werden Beispiele: Vergl. Komm. IFF-Grafik (Dateikommentar muß exakt "IFF-Grafik" lauten) Vergl. Komm. #?Grafik#? (Jeder Dateikommentar, der das Wort "Grafik" Klausel: Vergl. Datum Syntax: Vergl. Datum TTMMMJJ Vergleicht das Datum der Datei mit dem angegebenen Datum. Lesen Sie über Datumsformate bitte auch das Kapitel über die internen Befehle und dort speziell die 'Selektive Anwahl'. Beispiele: Vergl. Datum 15Aug96 (Datei muß exakt dieses Datum haben) Vergl. Datum < 10Jan96 (Datei muß vor diesem Datum erzeugt worden sein) Klausel: Vergl. Name Syntax: Vergl. Name Dateiname Der angegebene Dateiname wird mit dem der zu untersuchenden Datei verglichen. Jeder gültige Platzhalter des AmigaDOS kann hier benutzt werden. Beispiele: Vergl. Name #?.ilbm (Alle Dateien, die auf ".ilbm" enden) Vergl. Name *.lzh (Alle Dateien, die auf ".lzh" enden) Klausel: Vergl. Größe Syntax: Vergl. Größe > oder < oder = INTEGERZAHL Vergleicht die Dateigröße mit dem angegebenen ganzzahligen Wert. Beispiele: Vergl. Größe > 1000 (Alle Dateien größer als 1000 Bytes) Vergl. Größe < 10000 (Alle Dateien kleiner als 10000 Bytes) Klausel: Vergl. FORM Syntax: Vergl. FORM Chunkname Testet, ob die Datei einen gültigen IFF-Chunk enthält. Beispiele: Vergl. FORM ILBM (Datei muß eine ILBM-Bilddatei sein) Vergl. FORM SMUS (Datei muß eine SMUS-Musikdatei sein) Klausel: Vergl. DTGr. Syntax: Vergl. DTGr. Typ Überprüft auf eine Standard Datatypgruppe. Dies ist erst OS3.0 oder höher verfügbar und die "datatypes.library" muß dazu in Ihrem System installiert sein, damit diese Funktion korrekt arbeitet. Beispiele: Vergl. DTGr. picture (Jede Bilddatei, die von den Datatypes erkannt wird) Vergl. DTGr. sound (Jede Tondatei, die von den Datatypes erkannt wird) Hierbei sind nur die ersten vier Buchstaben relevant! Sie könnten z.B. auch "pict" statt "picture" schreiben, aber das würde keinen Unterschied machen. Für weitere Informationen sehen Sie bitte in der Dokumentation zum Amiga nach. Sie finden dort unter "datatypes/datatypes.h" eine Liste aller momentan gebräuchlichen Datatypegruppen. Klausel: Vergl. DTID Syntax: Vergl. DTID Identifikation Überprüft die Identifikation eines Datatypes. Dazu muß die "datatypes.library" korrekt in Ihrem System installiert sein. Beispiel: Vergl. DTID jpeg (Überprüft auf JPEG-Dateien) Diese Funktion ist abhängig von den in Ihrem System installierten Datatypes. 12.6.3 Verzweigungsklauseln Klausel: Verzw. ABS Syntax: Verzw. ABS Byteposition (dezimal oder hexadezimal) Verzweigt zu einem bestimmten Byte, absolut zur Position des Dateibeginns. Bei Überprüfung von Dateiinhalten fangen Sie immer ganz vorne, aber jede vorausgegangene Klausel kann den Positionszeiger verschoben haben. Um also definitiv eine absolute Position zu bestimmen, können Sie diese Klausel verwenden. Beispiele: Verzw. ABS 0 (Zeiger auf Dateibeginn (Byte 1)) Verzw. ABS 100 (Zeiger auf Byte 101) Klausel: Verzw. REL Syntax: Verzw. REL Byteposition (dezimal oder hexadezimal) Verzweigt relativ zur momentanen Position. Der Positionszeiger wird relativ zur augenblicklichen Position neu gesetzt. Beispiele: Verzw. REL 16 (Positionszeiger 16 Bytes vorwärts in der Datei) Verzw. REL -4 (Positionszeiger 4 Bytes rückwärts in der Datei) Klausel: Suche nach Syntax: Suche nach TEXT, Suche nach $HEX Sucht ab der aktuellen Position nach einer Bytefolge, die mit der als Argument übergebenen übereinstimmt. Sehen Sie bitte bei der Klausel 'Vergl.' nach den für diese Klausel gültigen Argumente. Wird eine passende Bytefolge gefunden, dann entspricht die Position dem ersten gefundenen Byte. Beispiele: Suche nach CMAP (Text "CMAP" suchen, Position des Zeigers auf "C") Suche nach M.K. (Text "M.K." suchen, Position des Zeigers auf "M") Wenn diese Klausel keine passende Bytefolge findet, bedeutet dies, daß die Klausel unwahr ist. Ein Beispiel für die Nutzung ist die Dateiklasse der 24Bit-Bilder. Beispiel: Vergl. FORM????ILBM (Datei muß mit diesen Zeichen beginnen) Und (Ist dies erfüllt, dann tu das folgende) Suche nach BMHD (Suche nach dem BMHD-Chunk) Verzw. REL 16 (16 Bytes weiterspringen) Vergl. $18 (Dort muß 24 (oder $18 in Hex) stehen) Klausel: Suche Chunk Syntax: Suche Chunk Sucht nach einem IFF-Chunk. Diese Klausel ähnelt der Klausel "Suche nach", ist aber schneller, da diese das IFF-Format versteht und nicht passende Chunks gleich überspringt anstatt die ganze Datei zu durchsuchen. Außerdem werden nur gültige Chunks gefunden, wohingegen die "Suche nach"-Klausel auf der Suche nach IFF-Chunks auch Daten fehlinterpretieren kann. Beispiele: Suche Chunk BMHD (Sucht nach dem nächsten BMHD-Chunk) Wir raten Ihnen, sich die mitgelieferten, vordefinierten Dateitypen genauer anzuschauen, um einen Eindruck von den Möglichkeiten und den nahezu unbegrenzten Fähigkeiten dieses Systems zu bekommen. 12.6.4 Anwendungsbeispiele Einige häufig benötigte Beispiele sind: a) Prüfen, ob ein Bild vom Format JPEG vorliegt. Ein Datatype vom Typ "JPEG" muß in Ihrem System vorhanden sein. Vergl. DTGr. pict (Auf Datatypegruppe Picture prüfen) Vergl. DTID jpeg (Auf Identifikation JPEG prüfen) b) Prüfen, ob die Datei eine 24Bit-IFF-Datei ist Vergl. FORM ILBM (ILBM-Chung vorhanden ?) Suche Chunk BMHD (Suche nach dem BMHD-Chunk) Verzw. REL 16 (16 Bytes weiterspringen) Vergl. $18 (Steht dort 24 (oder $18 in Hex)?) c) Prüfen, ob eine Datei im FAX-IFF-Format von GPFax vorliegt Vergl. FORM FAXX (Bytefolge FAXX gefunden ?) Oder (wenn nein, dann... Vergl. FORM FAX3 (Bytefolge FAX3 gefunden ?) d) Prüfen, ob eine Datei im AmigaGuide-Format vorliegt Vergl.(ign.) @database (Bytefolge "@database" gefunden ?) 12.7 Der automatische Dateityperzeuger Es ist uns bewußt geworden, daß viele Anwender nicht die Zeit aufbringen können, Dateien sorgfältig zu analysieren, um deren internes Dateiformat herauszufinden. Darum haben wir in Opus 5.5 ein System eingeführt, daß Dateien automatisch testet, analysiert und für Sie eine Dateitypdefinition erzeugt. Sie können den Dateityperzeuger auch jedesmal von Opus aufrufen lassen, wenn eine Datei, die Sie doppelklicken nicht erkannt wird. Dies ist die schnellste Methode eine Liste benutzbarer Dateitypen aufzubauen. Unglücklicherweise ist es uns natürlich nicht möglich, die Befehle oder Funktionen, die Sie ausgeführt haben möchten, automatisch mitzudefinieren, aber wir sind Ihnen immerhin auf dem halben Wege entgegengekommen. Der Rest liegt bei Ihnen! Das Dateitypenmodul wurde geschaffen, um automatisch Dateitypen für Dateien oder Gruppen von Dateien zu finden und zu erschaffen, ohne daß der Benutzer Experte auf dem Gebiet der Dateiformate sein muß. Das Modul bietet zwei interne Befehle, FindFileType (Dateityp suchen) und CreateFileType (Dateityp erzeugen). "FindFileType" hilft Ihnen dabei, herauszufinden, welcher Ihrer aktuell verfügbaren Dateitypen zu einer angegebenen Datei passt, egal ob sich dieser nun im Verzeichnis "DOpus5:Filetypes" oder im Storage-Verzeichnis befindet. Abb.: Der Dateitypsucher. Die Anzeige zeigt Ihnen eine Liste aller Dateitypen, die auf die gegebene Datei passen würden, in Reihenfolge ihrer Prioritäten. Der Dateityp, den Opus nutzen würde, wird zur sofortigen Bearbeitung hervorgehoben dargestellt. Wenn sich im Verzeichnis "Storage" ein besserer als die installierten Dateitypen befindet, so kann das Dateitypenmodul diesen für Sie installieren. Wenn sich weder im Verzeichnis "Storage" noch im Verzeichnis "Filetypes" ein passender Dateityp befindet, so kann durch Aufruf des automatischen Dateityperzeugers (Befehl "CreateFileType") eine wertvolle Hilfe zur Erstellung eines solchen Dateityps bereitgestellt werden. Sie können auch den aktuellen, passenden Dateitypen bearbeiten. Der Dateitypensucher erlaubt es Ihnen, nur den aktuell passenden Dateityp zu ändern, nicht die anderen, die in der Liste angezeigt werden. Bedenken Sie bitte, daß der Dateitypsucher als Hilfe zur schnellen Identifizierung von unbekannter Dateitypen gedacht ist. Für kompliziertere Operationen, oder wenn Sie mehrere Dateitypen zugleich bearbeiten wollen, sollten Sie direkt den Dateitypenmanager benutzen. "CreateFileType" hilft Ihnen bei der Erzeugung eines neuen Dateityps für eine einzelne Datei oder bevorzugt für eine Liste von Dateien gleichen Typs. Der Dateityperzeuger wurde dazu geschaffen, eine Liste von Dateien gleichen Typs zu akzeptieren, diese auf Gemeinsamkeiten bezüglich der Vergleichselemente von Opus zu analysieren und daraus automatisch einen passenden Dateityp zu erzeugen. Die Vergleichselemente werden auf der rechten Seite der Anzeige dargestellt und Sie können wählen, welche dieser Elemente Sie zur Definition des Dateityps nutzen wollen. Sollten rechts keinerlei Vergleichselemente verfügbar sein, so war der Dateityperzeuger nicht in der Lage, gleiche Elemente in der Liste der gegebenen Dateien zu finden. In solchen Fällen sollten Sie selektiv Dateien aus der Liste entfernen, bis es möglich ist, einen Dateityp sicher zu erkennen. Sie können mit Hilfe der Knöpfe Dateien zur Liste hinzufügen oder auch entfernen. Sie können Dateien auch einfach per "Nehmen & Ablegen" dort hinzufügen. Abb.: Der Dateityperzeuger:links die Dateien, rechts die Vergleichselemente. Rechts der Dateiliste ist eine Reihe von Auswahlboxen. Jede steht für eine Standardfunktion zur Dateitypidentifizierung. Diese Funktionen sind: Name Vergl.Name Vergleicht auf passende Dateinamensmuster. IFF Vergl.FORM Vergleicht auf passende IFF-Chunks. Gruppe Vergl.DTGr. Vergleicht aus System-Datatype-Gruppen. ID Vergl.DTID Vergleicht auf System-Datatype-ID's. Bytes (G/k) Vergl. Vergleicht auf identische Bytes. Bytes (Kein G/k) Vergl.(ign.) Vergleicht auf identische Bytes (ohne auf (Groß-/Kleinschreibung zu achten). Name: Dieses Feld zeigt den gemeinsamen Teil der Namen aller Dateien der Liste, der auf alle gewählten Dateien passt. Dies ist üblicherweise eine Dateinamenserweiterung wie ".gif" oder ".info". IFF: Wenn alle Dateien der Liste dem IFF-FORM-Standard entsprechen und alle denselben FORM-Typ enthalten, wird dieser hier angezeigt. Dies könnte z.B. "ILBM" oder "8SVX" sein. Gruppe: Wenn auf Ihrem Rechner das Datatypesystem verfügbar ist und alle Dateien derselben Datatypegruppe entsprechen, so wird diese Gruppe hier angezeigt. Dies könnte z.B. "text" oder "pict" sein. ID: Wenn auf Ihrem Rechner das Datatypesystem verfügbar ist und alle Dateien derselben Datatype-ID entsprechen, so wird diese ID hier angezeigt. Dies könnte z.B. "amig" oder "ilbm" sein, oder jeder andere Datatype, der in Ihrem System installiert ist. Bytes: Dieses Feld zeigt die ersten 16 Bytes jeder Datei an, wobei einfache Platzhalter Verwendung finden. Mit dem Wechselknopf "G/k" oder "Kein G/k" können Sie wählen, ob dabei die Groß- und Kleinschreibung beachtet werden soll oder nicht. Nur die Anteile, die allen gewählten Dateien gemeinsam sind, werden hier angezeigt. Wird eine Datei zur Liste hinzugefügt, die nicht dem Typ der anderen angezeigten Dateien entspricht, so wird die Liste der Vergleichselemente automatisch und sofort auf den neuen Stand gebracht. Auch das Löschen einer Datei aus der Liste führt zu einer Anpassung. Jedes der Felder der Vergleichselemente kann einzeln an- oder ausgeschaltet werden. Der Knopf "Bearbeiten" öffnet den standardmäßigen Dateitypeditor, der Ihnen eine weitere Anpassung an Ihre Bedürfnisse erlaubt, z.B. eine weitere Anpassung der Vergleichsklauseln, ein Hinzufügen von Standardaktionen, Popup-Menüs und eines Standardpiktogramms. Nachdem Sie also anhand der Auswahlboxen die Kriterien zur Erkennung der Datei im Dateityperzeuger gewählt haben, können Sie durch einen Druck auf den Knopf "Bearbeiten" den erzeugten Dateityp noch manuell weiterbearbeiten. Wenn Sie nach dem Bearbeiten des Dateityps entscheiden, noch Dateien zu der Liste der Dateien im Dateityperzeuger hinzuzufügen oder zu entfernen, so gehen alle Ihre bearbeiteten Veränderungen verloren. Ein Fenster wird Ihnen aber davor noch einen Warnhinweis mit der Möglichkeit zum Abbruch bieten. Wird ein neuer Dateityp gespeichert, wird er von Opus erkannt und ist sofort für die Dateitypenerkennung verfügbar. Sie sollten den Dateityperzeuger mit Bedacht benutzen. Es ist damit sehr einfach einen Dateityp zu erzeugen, der zu generell gehalten ist und auf sehr viele Dateien passt. Testen Sie daher nach der Erzeugung eines neuen Dateityps diesen mit vielen Dateien verschiedenen Typs, um sicherzustellen, daß der von Ihnen erzeugte Dateityp nur auf die Dateien zutrifft, für die er gedacht war. Es ist generell nicht ratsam, den Dateityperzeuger zur Erzeugung eines neuen Dateityps zu nutzen, wenn dieser nur auf einer einzelnen Datei basiert (obwohl dies möglich ist). Benutzen Sie möglichst immer mehrere Dateien gleichen Typs zur Erzeugung neuer Dateitypen.